<?php

namespace app\admin\model;

use think\Model;
use traits\model\SoftDelete;

class AuthGroup extends Model
{
    use SoftDelete; //软删除功能，实际项目中对数据频繁使用删除操作会导致性能问题
    protected $deleteTime = 'delete_time';  //软删除字段,ThinkPHP5的软删除功能使用时间戳类型（数据表默认值为Null）
    protected $type = ['delete_time'  =>  'datetime'];  //写入和读取数据的时候都会自动处理成时间字符串Y-m-d H:i:s的格式。

    public function _save()
    {
        $data = input('post.');
        $res = $this->validate(true)->allowField(['title','status'])->save($data);   //过滤非数据表字段数据
        if($res !== false){
            return ajax_return(1,'新增成功','group_index');
        }else{
            return ajax_return(0,$this->getError());
        }
    }

    public function _update()
    {
        $data = input('post.');
        if ($data['id'] == 1 && $data['status'] != 1) return ajax_return(0,'超级管理组不可禁用');
        $res = $this->validate(true)->allowField(true)->save($data,['id'=>$data['id']]);//isUpdate(true)显式指定更新数据操作
        if($res !== false){
            return ajax_return(1,'更新成功','group_index');   //更新成功后跳转编辑前页面
        }else{
            return ajax_return(0,$this->getError());
        }
    }
    //更新权限
    public function _updateAuthGroupRule()
    {
        $data = input('post.');
        $data['rules'] = is_array($data['auth_rule_ids']) ? implode(',', $data['auth_rule_ids']) : '';
        $res = $this->allowField(true)->save($data,['id'=>$data['id']]);//isUpdate(true)显式指定更新数据操作
        if($res !== false){
            return ajax_return(1,'更新成功','group_index');   //更新成功后跳转编辑前页面
        }else{
            return ajax_return(0,$this->getError());
        }
    }
    /**
     * 软删除操作
     * @param mixed $id 待删除列表主键
     * @param bool $force   是否真实删除
     * @return array
     */
    public function _delete($id,$force = false)
    {
        $res = $this::destroy($id,$force);  //返回删除成功数（int）
        if($res > 0){
            return ajax_return(1,'删除成功');
        }else{
            return ajax_return(0,$this->getError());
        }
    }
}